home *** CD-ROM | disk | FTP | other *** search
/ Cre@te Online 2000 December / Cre@teOnline CD05.iso / MacSoft / XML ConsoleMax.sea / XML ConsoleMax / Required / swingall.jar / javax / swing / text / html / HTMLEditorKit$LinkController.class (.txt) < prev    next >
Encoding:
Java Class File  |  1999-07-15  |  4.1 KB  |  118 lines

  1. package javax.swing.text.html;
  2.  
  3. import java.awt.Point;
  4. import java.awt.Rectangle;
  5. import java.awt.event.MouseAdapter;
  6. import java.awt.event.MouseEvent;
  7. import java.io.Serializable;
  8. import java.net.MalformedURLException;
  9. import java.net.URL;
  10. import java.util.EventObject;
  11. import javax.swing.JEditorPane;
  12. import javax.swing.event.HyperlinkEvent;
  13. import javax.swing.event.HyperlinkEvent.EventType;
  14. import javax.swing.text.AttributeSet;
  15. import javax.swing.text.BadLocationException;
  16. import javax.swing.text.DefaultStyledDocument;
  17. import javax.swing.text.Document;
  18. import javax.swing.text.Element;
  19. import javax.swing.text.JTextComponent;
  20. import javax.swing.text.html.HTML.Attribute;
  21. import javax.swing.text.html.HTML.Tag;
  22.  
  23. public class HTMLEditorKit$LinkController extends MouseAdapter implements Serializable {
  24.    protected void activateLink(int var1, JEditorPane var2) {
  25.       this.activateLink(var1, var2, -1, -1);
  26.    }
  27.  
  28.    void activateLink(int var1, JEditorPane var2, int var3, int var4) {
  29.       Document var5 = ((JTextComponent)var2).getDocument();
  30.       if (var5 instanceof HTMLDocument) {
  31.          HTMLDocument var6 = (HTMLDocument)var5;
  32.          Element var7 = ((DefaultStyledDocument)var6).getCharacterElement(var1);
  33.          AttributeSet var8 = var7.getAttributes();
  34.          AttributeSet var9 = (AttributeSet)var8.getAttribute(Tag.A);
  35.          String var10 = var9 != null ? (String)var9.getAttribute(Attribute.HREF) : null;
  36.          HyperlinkEvent var11 = null;
  37.          if (var10 != null) {
  38.             var11 = this.createHyperlinkEvent(var2, var6, var10, var9);
  39.          } else if (var3 >= 0 && var4 >= 0) {
  40.             Object var12 = var8.getAttribute(Attribute.USEMAP);
  41.             if (var12 != null && var12 instanceof String) {
  42.                Map var13 = var6.getMap((String)var12);
  43.                if (var13 != null) {
  44.                   Rectangle var14;
  45.                   try {
  46.                      var14 = ((JTextComponent)var2).modelToView(var1);
  47.                      Rectangle var15 = ((JTextComponent)var2).modelToView(var1 + 1);
  48.                      if (var14 != null && var15 != null) {
  49.                         var14.union(var15);
  50.                      }
  51.                   } catch (BadLocationException var16) {
  52.                      var14 = null;
  53.                   }
  54.  
  55.                   if (var14 != null) {
  56.                      AttributeSet var18 = var13.getArea(var3 - var14.x, var4 - var14.y, var14.width, var14.height);
  57.                      if (var18 != null) {
  58.                         var10 = (String)var18.getAttribute(Attribute.HREF);
  59.                         if (var10 != null) {
  60.                            var11 = this.createHyperlinkEvent(var2, var6, var10, var9);
  61.                         }
  62.                      }
  63.                   }
  64.                }
  65.             }
  66.          }
  67.  
  68.          if (var11 != null) {
  69.             var2.fireHyperlinkUpdate(var11);
  70.          }
  71.       }
  72.  
  73.    }
  74.  
  75.    HyperlinkEvent createHyperlinkEvent(JEditorPane var1, HTMLDocument var2, String var3, AttributeSet var4) {
  76.       URL var5;
  77.       try {
  78.          URL var6 = var2.getBase();
  79.          var5 = new URL(var6, var3);
  80.          if (var3 != null && "file".equals(var5.getProtocol()) && var3.startsWith("#")) {
  81.             String var7 = var6.getFile();
  82.             String var8 = var5.getFile();
  83.             if (var7 != null && var8 != null && !var8.startsWith(var7)) {
  84.                var5 = new URL(var6, var7 + var3);
  85.             }
  86.          }
  87.       } catch (MalformedURLException var9) {
  88.          var5 = null;
  89.       }
  90.  
  91.       Object var10 = null;
  92.       if (!var2.isFrameDocument()) {
  93.          var10 = new HyperlinkEvent(var1, EventType.ACTIVATED, var5, var3);
  94.       } else {
  95.          String var12 = var4 != null ? (String)var4.getAttribute(Attribute.TARGET) : null;
  96.          if (var12 == null || var12.equals("")) {
  97.             var12 = "_self";
  98.          }
  99.  
  100.          var10 = new HTMLFrameHyperlinkEvent(var1, EventType.ACTIVATED, var5, var3, var12);
  101.       }
  102.  
  103.       return (HyperlinkEvent)var10;
  104.    }
  105.  
  106.    public void mouseClicked(MouseEvent var1) {
  107.       JEditorPane var2 = (JEditorPane)((EventObject)var1).getSource();
  108.       if (!((JTextComponent)var2).isEditable()) {
  109.          Point var3 = new Point(var1.getX(), var1.getY());
  110.          int var4 = ((JTextComponent)var2).viewToModel(var3);
  111.          if (var4 >= 0) {
  112.             this.activateLink(var4, var2, var1.getX(), var1.getY());
  113.          }
  114.       }
  115.  
  116.    }
  117. }
  118.